package chapter14.section2;

/**
 * 程序14-5：向列表中追加数据的程序
 * ListDemo窗口实现的ActionListener接口，使得自己可以监听到点击按钮的动作
 * 测试程序时，每次只能创建一个按钮，将另外一个按钮注释掉，具体原因，参考
 * 事件机制部分的内容
 */

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class ListDemo extends JFrame implements ActionListener {
    JList myList;
    DefaultListModel data;
    int count;

    public ListDemo(String title, int width, int height) {
        super(title);
        this.setSize(width, height);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setContentPane(new JPanel());
        init();

    }

    public static void main(String[] args) {
        ListDemo app = new ListDemo("ListDemo", 600, 400);
        app.setVisible(true);
    }

    private void init() {
        data = new DefaultListModel();
        // 首先增加20个元素到列表中供初始化使用
        for (int i = 0; i < 20; i++) {
            data.addElement(i);
        }
        myList = new JList(data);
        myList.setBorder(BorderFactory.createEtchedBorder());
        this.add(myList);
        JButton btnCommand = new JButton("增加元素");
        // JButton btnCommand=new JButton("删除选中的元素");
        /*
         * 按钮将当前窗口作为自己被点击时的处理者，当事件发生时自动执行后面的 actionPerformed方法
         */
        btnCommand.addActionListener(this);
        this.add(btnCommand);
    }

    // 实现ActionListener接口定义的方法，定义了点击按钮时的功能
    public void actionPerformed(ActionEvent e) {
        // 以下代码对应增加元素的按钮
        data.addElement(count);
        count++;
        // 以下代码段对应删除选中的元素按钮
//Object[] si=myList.getSelectedValues(); //获得所有被选择的元素
//for(Object obj:si){
// data.removeElement(obj);  //从列表数据模型中删除指定的元素
//}
//myList.clearSelection(); //清除已有的选择
    }
}